/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.upc.dew.cobranzas.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import pe.edu.upc.dew.cobranzas.model.Cuenta;
import pe.edu.upc.dew.cobranzas.service.BancoServiceImpl;
import pe.edu.upc.dew.cobranzas.service.EmpresaServiceImpl;

/**
 *
 * @author Ivan
 */
public class CuentaDaoImpl implements CuentaDao {

    private List<Cuenta> cuentas;
    private EmpresaServiceImpl empresaService;
    private BancoServiceImpl bancoService;

    public void setBancoService(BancoServiceImpl bancoService) {
        this.bancoService = bancoService;
    }

    public void setEmpresaService(EmpresaServiceImpl empresaService) {
        this.empresaService = empresaService;
    }

  

    public CuentaDaoImpl() {
        this.cuentas = new ArrayList<Cuenta>();
        this.cargarCuentas();
    }

    public void cargarCuentas() {
        Connection connection = null;
        Cuenta cuenta = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            connection = ConnectionUtils.getConnection();
            st = connection.createStatement();
            rs = st.executeQuery("select * from T_Cuenta");
            rs.next();
            do {

                cuenta = new Cuenta();
                cuenta.setNumCuenta(rs.getString("numCuenta")); 
                cuenta.setMoneda(rs.getString("moneda"));
                cuenta.setTipoCuenta(rs.getString("tipoCuenta"));
                int banc= rs.getInt("idBanco");
                String emp= rs.getString("ruc");
               // cuenta.setBanco(this.bancoService.getBancoxId(rs.getInt("idBanco")));
                //cuenta.setEmpresa(this.empresaService.getEmpresaxRuc(rs.getString("ruc")));
                
             
                this.cuentas.add(cuenta);

            } while (rs.next());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ConnectionUtils.closeResultSet(rs);
            ConnectionUtils.closeStatement(st);
            ConnectionUtils.closeConnection(connection);
        }
    }

    public List<Cuenta> Listado() {
        return this.cuentas;
    }

     public Cuenta getCuentaxNroCuenta(String nroCuenta) {
        Cuenta cuenta = new Cuenta();
        for (int i = 1; i <= this.cuentas.size(); i++) {
            if (this.cuentas.get(i - 1).getNumCuenta().equals(nroCuenta)) {
                cuenta = this.cuentas.get(i - 1);
                break;
            }
        }

        return cuenta;
    }
}
